From fc4b141f8a67738c0ce8ccad90040cd40d9e83e2 Mon Sep 17 00:00:00 2001 From: jottakka Date: Thu, 16 Oct 2025 15:47:05 -0300 Subject: [PATCH] [MOAR][ZOHO CREATOR] Adding Zoho Creator Toolkit (#626) Co-authored-by: Francisco Liberal --- docker/toolkits.txt | 1 + toolkits/miro_api/pyproject.toml | 2 +- .../zoho_creator_api/.pre-commit-config.yaml | 18 + toolkits/zoho_creator_api/.ruff.toml | 44 + toolkits/zoho_creator_api/LICENSE | 21 + toolkits/zoho_creator_api/Makefile | 54 + .../arcade_zoho_creator_api/__init__.py | 0 .../arcade_zoho_creator_api/tools/__init__.py | 1992 +++++++++++++++++ .../tools/request_body_schemas.py | 160 ++ .../wrapper_tools/AddRecordsToZohoForm.json | 329 +++ .../wrapper_tools/CreateBulkReadJob.json | 282 +++ .../wrapper_tools/DeleteReportRecords.json | 315 +++ .../wrapper_tools/DeleteZohoRecord.json | 299 +++ .../wrapper_tools/DownloadBulkReadJobCsv.json | 202 ++ .../wrapper_tools/DownloadFileFromRecord.json | 235 ++ .../wrapper_tools/DownloadZohoFile.json | 301 +++ .../wrapper_tools/FetchRecordDetail.json | 245 ++ .../wrapper_tools/FetchWorkspaceAppMeta.json | 115 + .../wrapper_tools/FetchZohoAppSections.json | 148 ++ .../FetchZohoCreatorPagesMeta.json | 148 ++ .../FetchZohoFormFieldsMetadata.json | 181 ++ .../FetchZohoFormMetaInformation.json | 148 ++ .../wrapper_tools/FetchZohoRecordDetail.json | 214 ++ .../wrapper_tools/FetchZohoRecords.json | 280 +++ .../wrapper_tools/FetchZohoReportRecords.json | 311 +++ .../wrapper_tools/FetchZohoReportsMeta.json | 148 ++ .../wrapper_tools/GetApplicationMetaInfo.json | 80 + .../wrapper_tools/GetBulkReadJobDetails.json | 214 ++ .../InsertRecordsInZohoForm.json | 298 +++ .../UpdateZohoCreatorReportRecords.json | 347 +++ .../wrapper_tools/UpdateZohoRecord.json | 331 +++ toolkits/zoho_creator_api/pyproject.toml | 60 + toolkits/zoho_creator_api/tests/__init__.py | 0 33 files changed, 7522 insertions(+), 1 deletion(-) create mode 100644 toolkits/zoho_creator_api/.pre-commit-config.yaml create mode 100644 toolkits/zoho_creator_api/.ruff.toml create mode 100644 toolkits/zoho_creator_api/LICENSE create mode 100644 toolkits/zoho_creator_api/Makefile create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/__init__.py create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/__init__.py create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/request_body_schemas.py create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/AddRecordsToZohoForm.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/CreateBulkReadJob.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteReportRecords.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteZohoRecord.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadBulkReadJobCsv.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadFileFromRecord.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadZohoFile.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchRecordDetail.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchWorkspaceAppMeta.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoAppSections.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoCreatorPagesMeta.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormFieldsMetadata.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormMetaInformation.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecordDetail.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecords.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportRecords.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportsMeta.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetApplicationMetaInfo.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetBulkReadJobDetails.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/InsertRecordsInZohoForm.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoCreatorReportRecords.json create mode 100644 toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoRecord.json create mode 100644 toolkits/zoho_creator_api/pyproject.toml create mode 100644 toolkits/zoho_creator_api/tests/__init__.py diff --git a/docker/toolkits.txt b/docker/toolkits.txt index 9ba61549..ed4ac558 100644 --- a/docker/toolkits.txt +++ b/docker/toolkits.txt @@ -12,3 +12,4 @@ arcade-stripe-api arcade-squareup-api arcade-xero-api arcade-zendesk +arcade-zoho-creator-api diff --git a/toolkits/miro_api/pyproject.toml b/toolkits/miro_api/pyproject.toml index 6f9e0296..5a2b4620 100644 --- a/toolkits/miro_api/pyproject.toml +++ b/toolkits/miro_api/pyproject.toml @@ -36,7 +36,7 @@ toolkit_name = "arcade_miro_api" # Use local path sources for arcade libs when working locally [tool.uv.sources] -arcade-ai = { path = "../../", editable = true } +arcade-mcp = { path = "../../", editable = true } arcade-serve = { path = "../../libs/arcade-serve/", editable = true } arcade-tdk = { path = "../../libs/arcade-tdk/", editable = true } [tool.mypy] diff --git a/toolkits/zoho_creator_api/.pre-commit-config.yaml b/toolkits/zoho_creator_api/.pre-commit-config.yaml new file mode 100644 index 00000000..7bcb24e9 --- /dev/null +++ b/toolkits/zoho_creator_api/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +files: ^.*/zoho_creator_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/zoho_creator_api/.ruff.toml b/toolkits/zoho_creator_api/.ruff.toml new file mode 100644 index 00000000..9519fe6c --- /dev/null +++ b/toolkits/zoho_creator_api/.ruff.toml @@ -0,0 +1,44 @@ +target-version = "py310" +line-length = 100 +fix = true + +[lint] +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/zoho_creator_api/LICENSE b/toolkits/zoho_creator_api/LICENSE new file mode 100644 index 00000000..dfbb8b76 --- /dev/null +++ b/toolkits/zoho_creator_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/zoho_creator_api/Makefile b/toolkits/zoho_creator_api/Makefile new file mode 100644 index 00000000..86da492a --- /dev/null +++ b/toolkits/zoho_creator_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/zoho_creator_api/arcade_zoho_creator_api/__init__.py b/toolkits/zoho_creator_api/arcade_zoho_creator_api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/__init__.py b/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/__init__.py new file mode 100644 index 00000000..2bf0bce6 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/__init__.py @@ -0,0 +1,1992 @@ +"""Arcade Starter Tools for Zoho Creator + +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.auth import OAuth2 +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, + data: 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, + method=method, + params=params, + headers=headers, + data=data, # type: ignore[arg-type] + ) + 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 + + +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_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.meta.application.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_app_sections( + context: ToolContext, + zoho_account_owner_name: Annotated[ + str, + "The account owner's username in Zoho. Required to fetch data for the specified application.", # noqa: E501 + ], + zoho_application_link_name: Annotated[ + str, + "The unique link name of the Zoho Creator application whose sections and components you want to fetch.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetch details of sections and components in Zoho Creator apps. + + Use this tool to retrieve information about the sections, forms, reports, and pages of a Zoho Creator application's web form factor.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/sections".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=zoho_application_link_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_auth=OAuth2(id="arcade-zoho"), requires_secrets=["ZOHO_SERVER_URL"]) +async def fetch_record_detail( + context: ToolContext, + application_private_link: Annotated[ + str, + "The private link identifier of the Zoho application, necessary for accessing the specific record's detail view.", # noqa: E501 + ], + account_owner_name: Annotated[ + str, + "The name of the account owner in Zoho. This specifies the owner of the account to which the app belongs.", # noqa: E501 + ], + application_link_name: Annotated[ + str, + "The unique identifier or slug for the specific Zoho app to query. This determines which app's data is accessed.", # noqa: E501 + ], + report_link_name: Annotated[ + str, + "The link name of the report from which to fetch the record detail. It identifies the specific report in the Zoho app.", # noqa: E501 + ], + record_id: Annotated[ + str, + "The unique identifier of the record to fetch detailed information for. It should be a string corresponding to the record's ID in the Zoho app.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches detailed view data of a record by ID. + + Use this tool to fetch detailed information of a specific record identified by its ID in a Zoho app. It does not include related data blocks.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + report_link_name=report_link_name, + record_ID=record_id, + ), + method="GET", + params=remove_none_values({"privatelink": application_private_link}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.meta.form.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_form_fields_metadata( + context: ToolContext, + account_owner_name: Annotated[ + str, + "The Zoho account owner's username. Required to identify the specific account that owns the application.", # noqa: E501 + ], + application_link_name: Annotated[ + str, + "The unique link name of the Zoho Creator application. It identifies which application's form metadata to fetch.", # noqa: E501 + ], + form_identifier: Annotated[ + str, "The unique identifier or link name of the Zoho Creator form to fetch metadata for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches metadata of fields in a Zoho Creator form. + + Use this tool to obtain meta information about all the fields within a specified form in a Zoho Creator application. It should be called when you need to understand the structure or details of the form fields such as field types, names, etc.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/form/{form_link_name}/fields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + form_link_name=form_identifier, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.meta.application.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_reports_meta( + context: ToolContext, + zoho_account_owner_name: Annotated[ + str, + "The name of the account owner in Zoho. Used to identify which account's report metadata to fetch.", # noqa: E501 + ], + zoho_app_link_name: Annotated[ + str, + "The unique link name of the Zoho Creator application to fetch report metadata from. This identifies the specific app within your Zoho account.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches meta information of reports in Zoho Creator. + + This tool retrieves the meta information for all reports within a specified Zoho Creator application. Use it to gain insights into the report configurations and structures available in a particular app.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/reports".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=zoho_app_link_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_zoho_creator_report_records( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + account_owner_name: Annotated[ + str | None, + "The username of the owner of the Zoho account associated with the application. Required for determining access and permissions. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique identifier (link name) of the Zoho Creator application. Required to specify the target app for updating records. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + report_link_name: Annotated[ + str | None, + "The name or identifier of the report in Zoho Creator whose records you want to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + process_until_limit_enabled: Annotated[ + bool | None, + "Set to true to process records until reaching a limit of 200. Only used when mode is 'execute'.", # noqa: E501 + ] = 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 records in a Zoho Creator report. + + Use this tool to update up to 200 records in a specific report of a Zoho Creator application, ensuring compliance with data validation. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEZOHOCREATORREPORTRECORDS_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 path parameter: account_owner_name + if not account_owner_name: + raise RetryableToolError( + message="Invalid or missing account_owner_name parameter", + developer_message=f"Path parameter " + f"'account_owner_name' validation failed. " + f"Received: {account_owner_name}", + additional_prompt_content=( + "The 'account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: report_link_name + if not report_link_name: + raise RetryableToolError( + message="Invalid or missing report_link_name parameter", + developer_message=f"Path parameter " + f"'report_link_name' validation failed. " + f"Received: {report_link_name}", + additional_prompt_content=( + "The 'report_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "report_link_name value." + ), + ) + + # 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["UPDATEZOHOCREATORREPORTRECORDS_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["UPDATEZOHOCREATORREPORTRECORDS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["UPDATEZOHOCREATORREPORTRECORDS_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['UPDATEZOHOCREATORREPORTRECORDS_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + report_link_name=report_link_name, + ), + method="PATCH", + params=remove_none_values({"process_until_limit": process_until_limit_enabled}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_records( + context: ToolContext, + account_owner_identifier: Annotated[ + str, "The unique identifier for the Zoho account owner. Required to fetch the report data." + ], + application_link_name: Annotated[ + str, + "The unique identifier for the Zoho Creator application. It specifies which app's report to fetch.", # noqa: E501 + ], + report_link_name: Annotated[ + str, "The unique link name of the Zoho Creator report to fetch records from." + ], + start_record_index: Annotated[ + int | None, "The starting index of records to retrieve from the report. Must be an integer." + ] = None, + record_limit: Annotated[ + int | None, "The maximum number of records to retrieve, up to 200." + ] = None, + filter_criteria: Annotated[ + str | None, + "Specify conditions to filter records. Use Zoho Creator query format for filtering.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetch records from a Zoho Creator report. + + Use this tool to retrieve up to 200 records from the quick view fields of a specified Zoho Creator report.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_identifier, + app_link_name=application_link_name, + report_link_name=report_link_name, + ), + method="GET", + params=remove_none_values({ + "from": start_record_index, + "limit": record_limit, + "criteria": filter_criteria, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_report_records( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + account_owner_name: Annotated[ + str | None, + "The name of the Zoho account owner. It identifies whose account the deletion should occur under. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique identifier for the application within Zoho Creator. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + report_identifier: Annotated[ + str | None, + "The name of the report from which records should be deleted. Must match the link name configured in Zoho Creator. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + process_records_up_to_limit: Annotated[ + bool | None, + "Boolean to enable processing records up to the 200-record limit per request. Only used when mode is 'execute'.", # noqa: E501 + ] = 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 ''."]: + """Delete records from a specified Zoho Creator report. + + Use this tool to delete up to 200 records from a specified report in your Zoho Creator application. This action will adhere to any custom validations configured for the target form. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["DELETEREPORTRECORDS_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 path parameter: account_owner_name + if not account_owner_name: + raise RetryableToolError( + message="Invalid or missing account_owner_name parameter", + developer_message=f"Path parameter " + f"'account_owner_name' validation failed. " + f"Received: {account_owner_name}", + additional_prompt_content=( + "The 'account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: report_identifier + if not report_identifier: + raise RetryableToolError( + message="Invalid or missing report_identifier parameter", + developer_message=f"Path parameter " + f"'report_identifier' validation failed. " + f"Received: {report_identifier}", + additional_prompt_content=( + "The 'report_identifier' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "report_identifier value." + ), + ) + + # 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["DELETEREPORTRECORDS_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["DELETEREPORTRECORDS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["DELETEREPORTRECORDS_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['DELETEREPORTRECORDS_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + report_link_name=report_identifier, + ), + method="DELETE", + params=remove_none_values({"process_until_limit": process_records_up_to_limit}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.meta.application.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_creator_pages_meta( + context: ToolContext, + account_owner_name: Annotated[ + str, + "The name of the account owner in Zoho. This identifies the owner of the application for which the page metadata is fetched.", # noqa: E501 + ], + zoho_app_link_name: Annotated[ + str, "The unique identifier for the Zoho Creator application to fetch page metadata." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches meta information of pages in a Zoho Creator app. + + This tool retrieves the meta information of all the pages present in a specified Zoho Creator application. Use it to gather detailed metadata about the app's pages, which can aid in app management and analysis.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/pages".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=zoho_app_link_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.dashboard.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_application_meta_info( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches meta information of accessible applications. + + Use this tool to retrieve the meta information of all applications you have access to in Zoho.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/applications".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.form.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def insert_records_in_zoho_form( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + zoho_account_owner_name: Annotated[ + str | None, + "The name of the account owner in Zoho. This is required to identify which account the records should be added to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique identifier of the application in which the form is located. This is necessary to specify the target Zoho Creator application. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + form_link_name: Annotated[ + str | None, + "The unique link name of the form in Zoho Creator where records will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = 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 ''."]: + """Add records to a form in Zoho Creator. + + Use this tool to add one or more records to a specified form in your Zoho Creator application. It allows up to 200 records per request, subject to validation. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "INSERTRECORDSINZOHOFORM_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 path parameter: zoho_account_owner_name + if not zoho_account_owner_name: + raise RetryableToolError( + message="Invalid or missing zoho_account_owner_name parameter", + developer_message=f"Path parameter " + f"'zoho_account_owner_name' validation failed. " + f"Received: {zoho_account_owner_name}", + additional_prompt_content=( + "The 'zoho_account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "zoho_account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: form_link_name + if not form_link_name: + raise RetryableToolError( + message="Invalid or missing form_link_name parameter", + developer_message=f"Path parameter " + f"'form_link_name' validation failed. " + f"Received: {form_link_name}", + additional_prompt_content=( + "The 'form_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "form_link_name value." + ), + ) + + # 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["INSERTRECORDSINZOHOFORM_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["INSERTRECORDSINZOHOFORM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["INSERTRECORDSINZOHOFORM_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['INSERTRECORDSINZOHOFORM_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/form/{form_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=application_link_name, + form_link_name=form_link_name, + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_zoho_record( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + zoho_account_owner_name: Annotated[ + str | None, + "The account owner's name in Zoho. Used to identify the correct Zoho Creator account for the update operation. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique name of the Zoho Creator application where the record resides. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + report_link_name: Annotated[ + str | None, + "The string identifier of the report in Zoho Creator where the record is located. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + record_id: Annotated[ + str | None, + "The unique identifier for the record to be updated in Zoho Creator. This ID specifies which record in the report will be modified. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = 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 a specific record in Zoho Creator by ID. + + Use this tool to update a specific record within a Zoho Creator application. This tool is useful when modifications are needed on existing entries identified by their record ID, and respects the data validations configured for the form. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEZOHORECORD_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 path parameter: zoho_account_owner_name + if not zoho_account_owner_name: + raise RetryableToolError( + message="Invalid or missing zoho_account_owner_name parameter", + developer_message=f"Path parameter " + f"'zoho_account_owner_name' validation failed. " + f"Received: {zoho_account_owner_name}", + additional_prompt_content=( + "The 'zoho_account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "zoho_account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: report_link_name + if not report_link_name: + raise RetryableToolError( + message="Invalid or missing report_link_name parameter", + developer_message=f"Path parameter " + f"'report_link_name' validation failed. " + f"Received: {report_link_name}", + additional_prompt_content=( + "The 'report_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "report_link_name value." + ), + ) + + # Validate required path parameter: record_id + if not record_id: + raise RetryableToolError( + message="Invalid or missing record_id parameter", + developer_message=f"Path parameter " + f"'record_id' validation failed. " + f"Received: {record_id}", + additional_prompt_content=( + "The 'record_id' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "record_id value." + ), + ) + + # 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["UPDATEZOHORECORD_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["UPDATEZOHORECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["UPDATEZOHORECORD_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['UPDATEZOHORECORD_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=application_link_name, + report_link_name=report_link_name, + record_ID=record_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_record_detail( + context: ToolContext, + account_owner_name: Annotated[ + str, + "The name of the account owner in Zoho to fetch the record for. This identifies the specific account under which the record exists.", # noqa: E501 + ], + application_identifier: Annotated[ + str, + "The name of the application in Zoho used to uniquely identify which app's record details are to be fetched.", # noqa: E501 + ], + report_link_name: Annotated[ + str, "The specific name of the report in Zoho from which the data will be fetched." + ], + record_id: Annotated[ + str, "The unique ID of the Zoho record to fetch its detailed information." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetches detailed view data of a Zoho record by ID. + + Use this tool to fetch the detailed information of a specific record in Zoho, identified by its record ID. This tool does not retrieve related records, only the detailed view of the specific identified record.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_identifier, + report_link_name=report_link_name, + record_ID=record_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.report.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_zoho_record( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + zoho_account_owner_name: Annotated[ + str | None, + "The account owner's name in Zoho. Required to specify which user's account to access. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique identifier for the Zoho Creator application. Provide this to specify which application contains the record to delete. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + report_link_name: Annotated[ + str | None, + "The unique name of the report in Zoho where the record is listed. This identifies which report contains the record to be deleted. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + record_id: Annotated[ + str | None, + "The unique ID of the record to be deleted from Zoho Creator. This must match the ID displayed in the relevant Zoho report. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = 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 ''."]: + """Delete a specific record in Zoho Creator by ID. + + This tool deletes a specific record in Zoho Creator using its ID. It is used when a user wants to remove a record that appears in a report. The deletion follows custom validations set for the form. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["DELETEZOHORECORD_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 path parameter: zoho_account_owner_name + if not zoho_account_owner_name: + raise RetryableToolError( + message="Invalid or missing zoho_account_owner_name parameter", + developer_message=f"Path parameter " + f"'zoho_account_owner_name' validation failed. " + f"Received: {zoho_account_owner_name}", + additional_prompt_content=( + "The 'zoho_account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "zoho_account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: report_link_name + if not report_link_name: + raise RetryableToolError( + message="Invalid or missing report_link_name parameter", + developer_message=f"Path parameter " + f"'report_link_name' validation failed. " + f"Received: {report_link_name}", + additional_prompt_content=( + "The 'report_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "report_link_name value." + ), + ) + + # Validate required path parameter: record_id + if not record_id: + raise RetryableToolError( + message="Invalid or missing record_id parameter", + developer_message=f"Path parameter " + f"'record_id' validation failed. " + f"Received: {record_id}", + additional_prompt_content=( + "The 'record_id' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "record_id value." + ), + ) + + # 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["DELETEZOHORECORD_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["DELETEZOHORECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["DELETEZOHORECORD_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['DELETEZOHORECORD_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=application_link_name, + report_link_name=report_link_name, + record_ID=record_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.bulk.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_bulk_read_job( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + account_owner_name: Annotated[ + str | None, + "The name of the account owner in Zoho for whom the bulk read job is being created. This should match the official account details. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The name of the application within Zoho to export records from. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + report_reference_name: Annotated[ + str | None, + "Specifies the unique link or name of the report from which records will be exported in Zoho. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = 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 ''."]: + """Initiate a bulk read job to export records. + + Use this tool to create a bulk read job in Zoho, which allows you to export records from a specified report. This is useful for managing large datasets efficiently. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEBULKREADJOB_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 path parameter: account_owner_name + if not account_owner_name: + raise RetryableToolError( + message="Invalid or missing account_owner_name parameter", + developer_message=f"Path parameter " + f"'account_owner_name' validation failed. " + f"Received: {account_owner_name}", + additional_prompt_content=( + "The 'account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: report_reference_name + if not report_reference_name: + raise RetryableToolError( + message="Invalid or missing report_reference_name parameter", + developer_message=f"Path parameter " + f"'report_reference_name' validation failed. " + f"Received: {report_reference_name}", + additional_prompt_content=( + "The 'report_reference_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "report_reference_name value." + ), + ) + + # 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["CREATEBULKREADJOB_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["CREATEBULKREADJOB_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["CREATEBULKREADJOB_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['CREATEBULKREADJOB_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/bulk/{account_owner_name}/{app_link_name}/report/{report_link_name}/read".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + report_link_name=report_reference_name, + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_auth=OAuth2(id="arcade-zoho"), requires_secrets=["ZOHO_SERVER_URL"]) +async def fetch_zoho_report_records( + context: ToolContext, + zoho_private_link: Annotated[ + str, "The private link URL or identifier for accessing a specific Zoho Creator report." + ], + account_owner_name: Annotated[ + str, + "The username of the Zoho account owner. Required to identify the correct account for fetching report records.", # noqa: E501 + ], + zoho_application_link_name: Annotated[ + str, + "The unique link name of the Zoho Creator application from which to fetch report records.", + ], + report_link_name: Annotated[ + str, + "The unique link name of the Zoho report to fetch records from. It's required to specify which report to access.", # noqa: E501 + ], + record_fetch_start_index: Annotated[ + int | None, "Specify the starting index for records to be fetched. Use an integer value." + ] = None, + record_limit: Annotated[ + int | None, "Specify the maximum number of records to fetch, up to 200." + ] = None, + filter_criteria: Annotated[ + str | None, + "A string to filter records based on specific conditions, formatted as 'Field_Name Operator Value'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetch records displayed by a Zoho Creator report. + + Use this tool to retrieve up to 200 records from a Zoho Creator report. It accesses the data in the fields shown in the report's quick view.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/report/{report_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=zoho_application_link_name, + report_link_name=report_link_name, + ), + method="GET", + params=remove_none_values({ + "privatelink": zoho_private_link, + "from": record_fetch_start_index, + "limit": record_limit, + "criteria": filter_criteria, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.bulk.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bulk_read_job_details( + context: ToolContext, + account_owner_name: Annotated[ + str, "The name of the account owner in Zoho. Required for identifying the correct account." + ], + application_link_name: Annotated[ + str, + "The name of the Zoho Creator application. Used to identify which application's bulk read job details are being retrieved.", # noqa: E501 + ], + report_link_name: Annotated[ + str, + "The link name of the report for which the bulk read job details are requested. This is required to specify the report in Zoho Creator.", # noqa: E501 + ], + job_id: Annotated[ + str, + "The unique identifier for the bulk read job to retrieve details for. This should be a string value.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Retrieve details of a completed bulk read job in Zoho Creator. + + This tool retrieves information about a bulk read job that was executed previously in Zoho Creator. It is useful when you need to check the status or outcome of a specific bulk read job.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/bulk/{account_owner_name}/{app_link_name}/report/{report_link_name}/read/{job_ID}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=account_owner_name, + app_link_name=application_link_name, + report_link_name=report_link_name, + job_ID=job_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.dashboard.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_workspace_app_meta( + context: ToolContext, + workspace_account_owner_name: Annotated[ + str, + "The name of the account owner for the workspace you want to fetch application meta information from.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetch meta information of applications in a workspace. + + Use this tool to retrieve the meta information for applications hosted in a specific workspace you have access to. Useful for gaining insights into application details.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/applications".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=workspace_account_owner_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoCreator.meta.application.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_zoho_form_meta_information( + context: ToolContext, + zoho_account_owner_name: Annotated[ + str, + "The name of the account owner for the Zoho Creator application. Required for authentication and identifying the account context.", # noqa: E501 + ], + zoho_app_link_name: Annotated[ + str, + "The unique link name of the Zoho Creator application. This identifies the app whose form meta information is to be fetched.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Fetch meta information of Zoho Creator app forms. + + This tool retrieves the meta information of all forms in a specified Zoho Creator application. Use it to obtain details about the forms within the application.""" # noqa: E501 + request_data = remove_none_values({}) + response = await make_request( + url="{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/forms".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=zoho_app_link_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data) if request_data else None, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_auth=OAuth2(id="arcade-zoho"), requires_secrets=["ZOHO_SERVER_URL"]) +async def add_records_to_zoho_form( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + form_private_link: Annotated[ + str | None, + "The unique identifier for accessing a specific form in Zoho Creator securely. Required for access control. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + zoho_account_owner_name: Annotated[ + str | None, + "The account owner's name associated with the Zoho Creator application. This is needed to authenticate and route the records correctly. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + application_link_name: Annotated[ + str | None, + "The unique identifier for the Zoho application where the form resides. Required to locate the specific application. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + zoho_form_link_name: Annotated[ + str | None, + "The unique link name of the form in Zoho Creator where records will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = 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 ''."]: + """Add multiple records to a Zoho Creator form efficiently. + + Use this tool to add up to 200 records at once to a specified form within your Zoho Creator application. Each JSON object in the input represents a record to be added, subject to validation. Suitable for situations needing bulk data import or batch entry creation. + + 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. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADDRECORDSTOZOHOFORM_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 query parameter: form_private_link + if not form_private_link: + raise RetryableToolError( + message="Invalid or missing form_private_link parameter", + developer_message=f"Query parameter " + f"'form_private_link' validation failed. " + f"Received: {form_private_link}", + additional_prompt_content=( + "The 'form_private_link' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "form_private_link value." + ), + ) + + # Validate required path parameter: zoho_account_owner_name + if not zoho_account_owner_name: + raise RetryableToolError( + message="Invalid or missing zoho_account_owner_name parameter", + developer_message=f"Path parameter " + f"'zoho_account_owner_name' validation failed. " + f"Received: {zoho_account_owner_name}", + additional_prompt_content=( + "The 'zoho_account_owner_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "zoho_account_owner_name value." + ), + ) + + # Validate required path parameter: application_link_name + if not application_link_name: + raise RetryableToolError( + message="Invalid or missing application_link_name parameter", + developer_message=f"Path parameter " + f"'application_link_name' validation failed. " + f"Received: {application_link_name}", + additional_prompt_content=( + "The 'application_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "application_link_name value." + ), + ) + + # Validate required path parameter: zoho_form_link_name + if not zoho_form_link_name: + raise RetryableToolError( + message="Invalid or missing zoho_form_link_name parameter", + developer_message=f"Path parameter " + f"'zoho_form_link_name' validation failed. " + f"Received: {zoho_form_link_name}", + additional_prompt_content=( + "The 'zoho_form_link_name' parameter is required when " + "executing this operation. " + "Please call this tool again with a valid " + "zoho_form_link_name value." + ), + ) + + # 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["ADDRECORDSTOZOHOFORM_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["ADDRECORDSTOZOHOFORM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + # Validate against schema + is_valid, validation_error = validate_json_against_schema( + request_data, REQUEST_BODY_SCHEMAS["ADDRECORDSTOZOHOFORM_REQUEST_BODY_SCHEMA"] + ) + if not is_valid: + raise RetryableToolError( + message=f"Request body validation failed: {validation_error}", + developer_message=f"Schema validation error: {validation_error}", + additional_prompt_content=( + f"The request body does not match the required schema. " + f"Errors:\n{validation_error}\n\n" + "Please fix the validation errors above and call this tool " + "again in execute mode with the corrected JSON.\n\n" + "Required schema:\n\n" + f"{json.dumps(REQUEST_BODY_SCHEMAS['ADDRECORDSTOZOHOFORM_REQUEST_BODY_SCHEMA'], indent=2)}" # noqa: E501 + ), + ) + + # Make the actual API request + response = await make_request( + url="{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/form/{form_link_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_owner_name=zoho_account_owner_name, + app_link_name=application_link_name, + form_link_name=zoho_form_link_name, + ), + method="POST", + params=remove_none_values({"privatelink": form_private_link}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + data=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/request_body_schemas.py b/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/request_body_schemas.py new file mode 100644 index 00000000..965fc535 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/tools/request_body_schemas.py @@ -0,0 +1,160 @@ +"""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] = { + "UPDATEZOHOCREATORREPORTRECORDS_REQUEST_BODY_SCHEMA": { + "properties": { + "criteria": { + "example": '(Single_Line.contains("Single Line of Text"))', + "type": "string", + }, + "data": { + "example": '{"Email":"jake@zylker.com","Phone_Number":"+15876786783"}', + "type": "object", + }, + "result": { + "properties": { + "fields": { + "example": '["Phone_Number","Email"]', + "items": {"type": "string"}, + "type": "array", + }, + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, + "DELETEREPORTRECORDS_REQUEST_BODY_SCHEMA": { + "properties": { + "criteria": { + "example": '(Single_Line.contains("Single Line of Text"))', + "type": "string", + }, + "result": { + "properties": { + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, + "INSERTRECORDSINZOHOFORM_REQUEST_BODY_SCHEMA": { + "properties": { + "data": { + "example": ( + '[{"Email":"jason@zylker.com","Phone_Number":"+16103948336"},' + '{"Email":"p.boyle@zylker.com","Phone_Number":"+12096173907"}]' + ), + "items": {"type": "object"}, + "type": "array", + }, + "result": { + "properties": { + "fields": { + "example": '["Phone_Number","Email"]', + "items": {"type": "string"}, + "type": "array", + }, + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, + "UPDATEZOHORECORD_REQUEST_BODY_SCHEMA": { + "properties": { + "data": { + "example": '{"Email":"jake@zylker.com","Phone_Number":"+15876786783"}', + "type": "object", + }, + "result": { + "properties": { + "fields": { + "example": '["Phone_Number","Email"]', + "items": {"type": "string"}, + "type": "array", + }, + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, + "DELETEZOHORECORD_REQUEST_BODY_SCHEMA": { + "properties": { + "result": { + "properties": { + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + } + }, + "type": "object", + }, + "CREATEBULKREADJOB_REQUEST_BODY_SCHEMA": { + "properties": { + "query": { + "properties": { + "criteria": {"example": "Number==1", "type": "string"}, + "fields": { + "example": '["Number","Single_Line","Radio","Date","Checkbox"]', + "items": {"type": "string"}, + "type": "array", + }, + "max_records": { + "example": 150000, + "format": "int64", + "maximum": 200000, + "minimum": 100000, + "type": "integer", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "ADDRECORDSTOZOHOFORM_REQUEST_BODY_SCHEMA": { + "properties": { + "data": { + "example": ( + '[{"Email":"jason@zylker.com","Phone_Number":"+16103948336"},' + '{"Email":"p.boyle@zylker.com","Phone_Number":"+12096173907"}]' + ), + "items": {"type": "object"}, + "type": "array", + }, + "result": { + "properties": { + "fields": { + "example": '["Phone_Number","Email"]', + "items": {"type": "string"}, + "type": "array", + }, + "message": {"example": True, "type": "boolean"}, + "tasks": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/AddRecordsToZohoForm.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/AddRecordsToZohoForm.json new file mode 100644 index 00000000..347728dc --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/AddRecordsToZohoForm.json @@ -0,0 +1,329 @@ +{ + "name": "AddRecordsToZohoForm", + "fully_qualified_name": "ZohoCreatorApi.AddRecordsToZohoForm@0.1.0", + "description": "Add multiple records to a Zoho Creator form efficiently.\n\nUse this tool to add up to 200 records at once to a specified form within your Zoho Creator application. Each JSON object in the input represents a record to be added, subject to validation. Suitable for situations needing bulk data import or batch entry creation.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "form_private_link", + "required": true, + "description": "The unique identifier for accessing a specific form in Zoho Creator securely. Required for access control.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "privatelink" + }, + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The account owner's name associated with the Zoho Creator application. This is needed to authenticate and route the records correctly.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier for the Zoho application where the form resides. Required to locate the specific application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "zoho_form_link_name", + "required": true, + "description": "The unique link name of the form in Zoho Creator where records 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": "form_link_name" + }, + { + "name": "records_json", + "required": false, + "description": "A JSON array representing up to 200 records to be added. Each object reflects a record to be validated and inserted into the form.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "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 ''.", + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": null + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/form/{form_link_name}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "privatelink", + "tool_parameter_name": "form_private_link", + "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": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "form_link_name", + "tool_parameter_name": "zoho_form_link_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": "records_json", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"[\\\"Phone_Number\\\",\\\"Email\\\"]\"\n },\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n },\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n },\n \"example\": \"[{\\\"Email\\\":\\\"jason@zylker.com\\\",\\\"Phone_Number\\\":\\\"+16103948336\\\"},{\\\"Email\\\":\\\"p.boyle@zylker.com\\\",\\\"Phone_Number\\\":\\\"+12096173907\\\"}]\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/CreateBulkReadJob.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/CreateBulkReadJob.json new file mode 100644 index 00000000..406bc83b --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/CreateBulkReadJob.json @@ -0,0 +1,282 @@ +{ + "name": "CreateBulkReadJob", + "fully_qualified_name": "ZohoCreatorApi.CreateBulkReadJob@0.1.0", + "description": "Initiate a bulk read job to export records.\n\nUse this tool to create a bulk read job in Zoho, which allows you to export records from a specified report. This is useful for managing large datasets efficiently.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho for whom the bulk read job is being created. This should match the official account details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The name of the application within Zoho to export records from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_reference_name", + "required": true, + "description": "Specifies the unique link or name of the report from which records will be exported in Zoho.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "request_body", + "required": false, + "description": "A JSON object defining the criteria, maximum number of records, and fields for the bulk read job. It includes 'criteria' (string) to filter records, 'max_records' (integer) to limit the number of records, and 'fields' (array of strings) specifying which fields to export.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "criteria": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "max_records": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "fields": { + "val_type": "array", + "inner_val_type": "string", + "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 ''.", + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.bulk.CREATE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/bulk/{account_owner_name}/{app_link_name}/report/{report_link_name}/read", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_reference_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": "request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "criteria": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "max_records": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "fields": { + "val_type": "array", + "inner_val_type": "string", + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"query\": {\n \"type\": \"object\",\n \"properties\": {\n \"criteria\": {\n \"type\": \"string\",\n \"example\": \"Number==1\"\n },\n \"max_records\": {\n \"format\": \"int64\",\n \"maximum\": 200000,\n \"type\": \"integer\",\n \"minimum\": 100000,\n \"example\": 150000\n },\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"[\\\"Number\\\",\\\"Single_Line\\\",\\\"Radio\\\",\\\"Date\\\",\\\"Checkbox\\\"]\"\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteReportRecords.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteReportRecords.json new file mode 100644 index 00000000..79868e60 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteReportRecords.json @@ -0,0 +1,315 @@ +{ + "name": "DeleteReportRecords", + "fully_qualified_name": "ZohoCreatorApi.DeleteReportRecords@0.1.0", + "description": "Delete records from a specified Zoho Creator report.\n\nUse this tool to delete up to 200 records from a specified report in your Zoho Creator application. This action will adhere to any custom validations configured for the target form.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the Zoho account owner. It identifies whose account the deletion should occur under.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier for the application within Zoho Creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_identifier", + "required": true, + "description": "The name of the report from which records should be deleted. Must match the link name configured in Zoho Creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "delete_request_body", + "required": false, + "description": "A JSON object detailing the criteria and options for deletion, including a 'criteria' string and 'result' options for feedback control.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "criteria": { + "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" + }, + { + "name": "process_records_up_to_limit", + "required": false, + "description": "Boolean to enable processing records up to the 200-record limit per request.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "process_until_limit" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.DELETE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "process_until_limit", + "tool_parameter_name": "process_records_up_to_limit", + "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": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_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": "delete_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "criteria": { + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n },\n \"criteria\": {\n \"type\": \"string\",\n \"example\": \"(Single_Line.contains(\\\"Single Line of Text\\\"))\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteZohoRecord.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteZohoRecord.json new file mode 100644 index 00000000..5665f7d1 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DeleteZohoRecord.json @@ -0,0 +1,299 @@ +{ + "name": "DeleteZohoRecord", + "fully_qualified_name": "ZohoCreatorApi.DeleteZohoRecord@0.1.0", + "description": "Delete a specific record in Zoho Creator by ID.\n\nThis tool deletes a specific record in Zoho Creator using its ID. It is used when a user wants to remove a record that appears in a report. The deletion follows custom validations set for the form.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The account owner's name in Zoho. Required to specify which user's account 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": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier for the Zoho Creator application. Provide this to specify which application contains the 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": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The unique name of the report in Zoho where the record is listed. This identifies which report contains the record 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": "report_link_name" + }, + { + "name": "record_id", + "required": true, + "description": "The unique ID of the record to be deleted from Zoho Creator. This must match the ID displayed in the relevant Zoho report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "record_ID" + }, + { + "name": "deletion_request_body", + "required": false, + "description": "JSON object specifying optional parameters for the delete request, like message and tasks flags.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "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": "" + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.DELETE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "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": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "deletion_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "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": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadBulkReadJobCsv.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadBulkReadJobCsv.json new file mode 100644 index 00000000..c7d75ea5 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadBulkReadJobCsv.json @@ -0,0 +1,202 @@ +{ + "name": "DownloadBulkReadJobCsv", + "fully_qualified_name": "ZohoCreatorApi.DownloadBulkReadJobCsv@0.1.0", + "description": "Download a bulk read job as a CSV in a ZIP file.\n\nUse this tool to download the results of a bulk read job from Zoho in CSV format. The file will be provided as a ZIP, which needs to be extracted to access the CSV. This is useful for retrieving large data sets processed as bulk read jobs.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner associated with the Zoho bulk read job. This is required to identify the correct account for the operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique name identifier for the application from which the bulk read job is to be downloaded. It is required to specify the application context in Zoho.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The unique name of the report linked to the bulk read job. Required to specify which report's CSV to download.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "bulk_read_job_id", + "required": true, + "description": "The unique identifier for the bulk read job to be downloaded. This ID specifies which job's results 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": "job_ID" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.bulk.READ"] + } + }, + "secrets": null, + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "https://zohoapis.com/creator/v2/bulk/{account_owner_name}/{app_link_name}/report/{report_link_name}/read/{job_ID}/result", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "job_ID", + "tool_parameter_name": "bulk_read_job_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": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadFileFromRecord.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadFileFromRecord.json new file mode 100644 index 00000000..b83fb442 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadFileFromRecord.json @@ -0,0 +1,235 @@ +{ + "name": "DownloadFileFromRecord", + "fully_qualified_name": "ZohoCreatorApi.DownloadFileFromRecord@0.1.0", + "description": "Download a file from a specific Zoho Creator record.\n\nThis tool downloads a file from a file upload, image, audio, video, or signature field of a specific record in a Zoho Creator application. It should be used when you need to retrieve file data from a specific record identified by account owner, application, report, and field information.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_identifier", + "required": true, + "description": "The account owner's unique identifier in Zoho Creator. Necessary for specifying which owner's data is 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": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique name of the Zoho Creator application to access the file from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The link name of the report in the Zoho Creator application. This is used to identify the specific report containing the record.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "record_id", + "required": true, + "description": "The unique identifier of the specific record from which to download the file in Zoho Creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "record_ID" + }, + { + "name": "field_identifier", + "required": true, + "description": "The identifier for the field from which to download the file. It is a string representing the field link name in the Zoho Creator application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "field_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.READ"] + } + }, + "secrets": null, + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "https://zohoapis.com/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}/{field_link_name}/download", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "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": [] + }, + { + "name": "field_link_name", + "tool_parameter_name": "field_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": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadZohoFile.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadZohoFile.json new file mode 100644 index 00000000..10fa39b3 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/DownloadZohoFile.json @@ -0,0 +1,301 @@ +{ + "name": "DownloadZohoFile", + "fully_qualified_name": "ZohoCreatorApi.DownloadZohoFile@0.1.0", + "description": "Download file from Zoho Creator subform record field.\n\nThis tool downloads a file from a specified file upload, image, audio, video, or signature field of a subform record in a Zoho Creator application. Use it when you need to retrieve a specific file associated with a subform record.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The account owner's name for the Zoho account. This identifies the owner of the Zoho Creator application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_application_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application from which to download the file.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The unique identifier for the report containing the subform in Zoho Creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "zoho_record_id", + "required": true, + "description": "The unique identifier for the main record that contains the subform in a Zoho Creator application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "record_ID" + }, + { + "name": "subform_identifier", + "required": true, + "description": "The unique identifier for the subform in the Zoho Creator application from which the file will be downloaded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "subform_link_name" + }, + { + "name": "field_link_name", + "required": true, + "description": "Specifies the field name containing the file to download from the Zoho Creator subform record.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "field_link_name" + }, + { + "name": "subform_record_id", + "required": true, + "description": "The ID of the specific record within the subform from which you want to download the file.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "subform_record_ID" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.READ"] + } + }, + "secrets": null, + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "https://zohoapis.com/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}/{subform_link_name}/{field_link_name}/{subform_record_ID}/download", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "zoho_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": [] + }, + { + "name": "subform_link_name", + "tool_parameter_name": "subform_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": "field_link_name", + "tool_parameter_name": "field_link_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": "subform_record_ID", + "tool_parameter_name": "subform_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": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchRecordDetail.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchRecordDetail.json new file mode 100644 index 00000000..22716bb3 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchRecordDetail.json @@ -0,0 +1,245 @@ +{ + "name": "FetchRecordDetail", + "fully_qualified_name": "ZohoCreatorApi.FetchRecordDetail@0.1.0", + "description": "Fetches detailed view data of a record by ID.\n\nUse this tool to fetch detailed information of a specific record identified by its ID in a Zoho app. It does not include related data blocks.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_private_link", + "required": true, + "description": "The private link identifier of the Zoho application, necessary for accessing the specific record's detail view.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "privatelink" + }, + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho. This specifies the owner of the account to which the app belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier or slug for the specific Zoho app to query. This determines which app's data is accessed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The link name of the report from which to fetch the record detail. It identifies the specific report in the Zoho app.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "record_id", + "required": true, + "description": "The unique identifier of the record to fetch detailed information for. It should be a string corresponding to the record's ID in the Zoho app.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "record_ID" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": null + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "privatelink", + "tool_parameter_name": "application_private_link", + "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": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchWorkspaceAppMeta.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchWorkspaceAppMeta.json new file mode 100644 index 00000000..f7f06f0d --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchWorkspaceAppMeta.json @@ -0,0 +1,115 @@ +{ + "name": "FetchWorkspaceAppMeta", + "fully_qualified_name": "ZohoCreatorApi.FetchWorkspaceAppMeta@0.1.0", + "description": "Fetch meta information of applications in a workspace.\n\nUse this tool to retrieve the meta information for applications hosted in a specific workspace you have access to. Useful for gaining insights into application details.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workspace_account_owner_name", + "required": true, + "description": "The name of the account owner for the workspace you want to fetch application meta information from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.dashboard.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/applications", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "workspace_account_owner_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoAppSections.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoAppSections.json new file mode 100644 index 00000000..c708da91 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoAppSections.json @@ -0,0 +1,148 @@ +{ + "name": "FetchZohoAppSections", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoAppSections@0.1.0", + "description": "Fetch details of sections and components in Zoho Creator apps.\n\nUse this tool to retrieve information about the sections, forms, reports, and pages of a Zoho Creator application's web form factor.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The account owner's username in Zoho. Required to fetch data for the specified application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_application_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application whose sections and components you want to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.meta.application.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/sections", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_application_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoCreatorPagesMeta.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoCreatorPagesMeta.json new file mode 100644 index 00000000..3bb094d6 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoCreatorPagesMeta.json @@ -0,0 +1,148 @@ +{ + "name": "FetchZohoCreatorPagesMeta", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoCreatorPagesMeta@0.1.0", + "description": "Fetches meta information of pages in a Zoho Creator app.\n\nThis tool retrieves the meta information of all the pages present in a specified Zoho Creator application. Use it to gather detailed metadata about the app's pages, which can aid in app management and analysis.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho. This identifies the owner of the application for which the page metadata is fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_app_link_name", + "required": true, + "description": "The unique identifier for the Zoho Creator application to fetch page metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.meta.application.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/pages", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_app_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormFieldsMetadata.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormFieldsMetadata.json new file mode 100644 index 00000000..f391dee6 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormFieldsMetadata.json @@ -0,0 +1,181 @@ +{ + "name": "FetchZohoFormFieldsMetadata", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoFormFieldsMetadata@0.1.0", + "description": "Fetches metadata of fields in a Zoho Creator form.\n\nUse this tool to obtain meta information about all the fields within a specified form in a Zoho Creator application. It should be called when you need to understand the structure or details of the form fields such as field types, names, etc.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The Zoho account owner's username. Required to identify the specific account that owns the application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application. It identifies which application\u2019s form metadata to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "form_identifier", + "required": true, + "description": "The unique identifier or link name of the Zoho Creator form to fetch metadata for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "form_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.meta.form.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/form/{form_link_name}/fields", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "form_link_name", + "tool_parameter_name": "form_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormMetaInformation.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormMetaInformation.json new file mode 100644 index 00000000..b34a78f4 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoFormMetaInformation.json @@ -0,0 +1,148 @@ +{ + "name": "FetchZohoFormMetaInformation", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoFormMetaInformation@0.1.0", + "description": "Fetch meta information of Zoho Creator app forms.\n\nThis tool retrieves the meta information of all forms in a specified Zoho Creator application. Use it to obtain details about the forms within the application.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The name of the account owner for the Zoho Creator application. Required for authentication and identifying the account context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_app_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application. This identifies the app whose form meta information is to be fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.meta.application.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/forms", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_app_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecordDetail.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecordDetail.json new file mode 100644 index 00000000..e617983e --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecordDetail.json @@ -0,0 +1,214 @@ +{ + "name": "FetchZohoRecordDetail", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoRecordDetail@0.1.0", + "description": "Fetches detailed view data of a Zoho record by ID.\n\nUse this tool to fetch the detailed information of a specific record in Zoho, identified by its record ID. This tool does not retrieve related records, only the detailed view of the specific identified record.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho to fetch the record for. This identifies the specific account under which the record exists.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_identifier", + "required": true, + "description": "The name of the application in Zoho used to uniquely identify which app's record details are to be fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The specific name of the report in Zoho from which the data will be fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "record_id", + "required": true, + "description": "The unique ID of the Zoho record to fetch its detailed information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "record_ID" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecords.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecords.json new file mode 100644 index 00000000..c8387f15 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoRecords.json @@ -0,0 +1,280 @@ +{ + "name": "FetchZohoRecords", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoRecords@0.1.0", + "description": "Fetch records from a Zoho Creator report.\n\nUse this tool to retrieve up to 200 records from the quick view fields of a specified Zoho Creator report.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_identifier", + "required": true, + "description": "The unique identifier for the Zoho account owner. Required to fetch the report data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier for the Zoho Creator application. It specifies which app's report to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator report to fetch records from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "start_record_index", + "required": false, + "description": "The starting index of records to retrieve from the report. Must be an integer.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "record_limit", + "required": false, + "description": "The maximum number of records to retrieve, up to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "filter_criteria", + "required": false, + "description": "Specify conditions to filter records. Use Zoho Creator query format for filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "criteria" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "from", + "tool_parameter_name": "start_record_index", + "description": "", + "value_schema": { + "val_type": "integer", + "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": "record_limit", + "description": "", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "criteria", + "tool_parameter_name": "filter_criteria", + "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": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportRecords.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportRecords.json new file mode 100644 index 00000000..4ab708b4 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportRecords.json @@ -0,0 +1,311 @@ +{ + "name": "FetchZohoReportRecords", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoReportRecords@0.1.0", + "description": "Fetch records displayed by a Zoho Creator report.\n\nUse this tool to retrieve up to 200 records from a Zoho Creator report. It accesses the data in the fields shown in the report's quick view.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_private_link", + "required": true, + "description": "The private link URL or identifier for accessing a specific Zoho Creator report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "privatelink" + }, + { + "name": "account_owner_name", + "required": true, + "description": "The username of the Zoho account owner. Required to identify the correct account for fetching report records.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_application_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application from which to fetch report records.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The unique link name of the Zoho report to fetch records from. It's required to specify which report 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": "report_link_name" + }, + { + "name": "record_fetch_start_index", + "required": false, + "description": "Specify the starting index for records to be fetched. Use an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "record_limit", + "required": false, + "description": "Specify the maximum number of records to fetch, up to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "filter_criteria", + "required": false, + "description": "A string to filter records based on specific conditions, formatted as 'Field_Name Operator Value'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "criteria" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": null + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/publish/{account_owner_name}/{app_link_name}/report/{report_link_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "privatelink", + "tool_parameter_name": "zoho_private_link", + "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": "from", + "tool_parameter_name": "record_fetch_start_index", + "description": "", + "value_schema": { + "val_type": "integer", + "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": "record_limit", + "description": "", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "criteria", + "tool_parameter_name": "filter_criteria", + "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": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportsMeta.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportsMeta.json new file mode 100644 index 00000000..1f145dc7 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/FetchZohoReportsMeta.json @@ -0,0 +1,148 @@ +{ + "name": "FetchZohoReportsMeta", + "fully_qualified_name": "ZohoCreatorApi.FetchZohoReportsMeta@0.1.0", + "description": "Fetches meta information of reports in Zoho Creator.\n\nThis tool retrieves the meta information for all reports within a specified Zoho Creator application. Use it to gain insights into the report configurations and structures available in a particular app.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho. Used to identify which account's report metadata to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "zoho_app_link_name", + "required": true, + "description": "The unique link name of the Zoho Creator application to fetch report metadata from. This identifies the specific app within your Zoho account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.meta.application.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/{account_owner_name}/{app_link_name}/reports", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "zoho_app_link_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetApplicationMetaInfo.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetApplicationMetaInfo.json new file mode 100644 index 00000000..b2967633 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetApplicationMetaInfo.json @@ -0,0 +1,80 @@ +{ + "name": "GetApplicationMetaInfo", + "fully_qualified_name": "ZohoCreatorApi.GetApplicationMetaInfo@0.1.0", + "description": "Fetches meta information of accessible applications.\n\nUse this tool to retrieve the meta information of all applications you have access to in Zoho.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.dashboard.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/meta/applications", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetBulkReadJobDetails.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetBulkReadJobDetails.json new file mode 100644 index 00000000..f4030966 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/GetBulkReadJobDetails.json @@ -0,0 +1,214 @@ +{ + "name": "GetBulkReadJobDetails", + "fully_qualified_name": "ZohoCreatorApi.GetBulkReadJobDetails@0.1.0", + "description": "Retrieve details of a completed bulk read job in Zoho Creator.\n\nThis tool retrieves information about a bulk read job that was executed previously in Zoho Creator. It is useful when you need to check the status or outcome of a specific bulk read job.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho. Required for identifying the correct account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The name of the Zoho Creator application. Used to identify which application's bulk read job details are 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": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The link name of the report for which the bulk read job details are requested. This is required to specify the report in Zoho Creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "job_id", + "required": true, + "description": "The unique identifier for the bulk read job to retrieve details for. This should be 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": "job_ID" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.bulk.READ"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/bulk/{account_owner_name}/{app_link_name}/report/{report_link_name}/read/{job_ID}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "job_ID", + "tool_parameter_name": "job_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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/InsertRecordsInZohoForm.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/InsertRecordsInZohoForm.json new file mode 100644 index 00000000..227a4868 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/InsertRecordsInZohoForm.json @@ -0,0 +1,298 @@ +{ + "name": "InsertRecordsInZohoForm", + "fully_qualified_name": "ZohoCreatorApi.InsertRecordsInZohoForm@0.1.0", + "description": "Add records to a form in Zoho Creator.\n\nUse this tool to add one or more records to a specified form in your Zoho Creator application. It allows up to 200 records per request, subject to validation.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The name of the account owner in Zoho. This is required to identify which account the records should be added to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier of the application in which the form is located. This is necessary to specify the target Zoho Creator application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "form_link_name", + "required": true, + "description": "The unique link name of the form in Zoho Creator where records 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": "form_link_name" + }, + { + "name": "records_to_insert", + "required": false, + "description": "A JSON object containing records to add to Zoho form. Each record should match the form fields structure. Maximum of 200 records per request.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "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 ''.", + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.form.CREATE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/form/{form_link_name}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "form_link_name", + "tool_parameter_name": "form_link_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": "records_to_insert", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"[\\\"Phone_Number\\\",\\\"Email\\\"]\"\n },\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n },\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\"\n },\n \"example\": \"[{\\\"Email\\\":\\\"jason@zylker.com\\\",\\\"Phone_Number\\\":\\\"+16103948336\\\"},{\\\"Email\\\":\\\"p.boyle@zylker.com\\\",\\\"Phone_Number\\\":\\\"+12096173907\\\"}]\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoCreatorReportRecords.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoCreatorReportRecords.json new file mode 100644 index 00000000..f94511a7 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoCreatorReportRecords.json @@ -0,0 +1,347 @@ +{ + "name": "UpdateZohoCreatorReportRecords", + "fully_qualified_name": "ZohoCreatorApi.UpdateZohoCreatorReportRecords@0.1.0", + "description": "Update records in a Zoho Creator report.\n\nUse this tool to update up to 200 records in a specific report of a Zoho Creator application, ensuring compliance with data validation.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_owner_name", + "required": true, + "description": "The username of the owner of the Zoho account associated with the application. Required for determining access and permissions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique identifier (link name) of the Zoho Creator application. Required to specify the target app for updating records.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The name or identifier of the report in Zoho Creator whose records you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "update_records_request", + "required": false, + "description": "JSON payload to specify the records to update, their values, and criteria. Must include 'data' for record details and 'criteria' for selecting records.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "criteria": { + "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" + }, + { + "name": "process_until_limit_enabled", + "required": false, + "description": "Set to true to process records until reaching a limit of 200.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "process_until_limit" + } + ] + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.UPDATE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "process_until_limit", + "tool_parameter_name": "process_until_limit_enabled", + "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": "account_owner_name", + "tool_parameter_name": "account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "update_records_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "criteria": { + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"[\\\"Phone_Number\\\",\\\"Email\\\"]\"\n },\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n },\n \"data\": {\n \"type\": \"object\",\n \"example\": \"{\\\"Email\\\":\\\"jake@zylker.com\\\",\\\"Phone_Number\\\":\\\"+15876786783\\\"}\"\n },\n \"criteria\": {\n \"type\": \"string\",\n \"example\": \"(Single_Line.contains(\\\"Single Line of Text\\\"))\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoRecord.json b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoRecord.json new file mode 100644 index 00000000..0c1c5460 --- /dev/null +++ b/toolkits/zoho_creator_api/arcade_zoho_creator_api/wrapper_tools/UpdateZohoRecord.json @@ -0,0 +1,331 @@ +{ + "name": "UpdateZohoRecord", + "fully_qualified_name": "ZohoCreatorApi.UpdateZohoRecord@0.1.0", + "description": "Update a specific record in Zoho Creator by ID.\n\nUse this tool to update a specific record within a Zoho Creator application. This tool is useful when modifications are needed on existing entries identified by their record ID, and respects the data validations configured for the form.", + "toolkit": { + "name": "ArcadeZohoCreatorApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "zoho_account_owner_name", + "required": true, + "description": "The account owner's name in Zoho. Used to identify the correct Zoho Creator account for the update operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_owner_name" + }, + { + "name": "application_link_name", + "required": true, + "description": "The unique name of the Zoho Creator application where the record resides.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_link_name" + }, + { + "name": "report_link_name", + "required": true, + "description": "The string identifier of the report in Zoho Creator where the record is located.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_link_name" + }, + { + "name": "record_id", + "required": true, + "description": "The unique identifier for the record to be updated in Zoho Creator. This ID specifies which record in the report will 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": "record_ID" + }, + { + "name": "record_update_payload", + "required": false, + "description": "JSON object containing the data to update the record. Must include fields, message, tasks, and data configurations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "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": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": ["ZohoCreator.report.UPDATE"] + } + }, + "secrets": [ + { + "key": "ZOHO_SERVER_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.0.0", + "description": "Tools that enable LLMs to interact directly with the zoho API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/creator/v2/data/{account_owner_name}/{app_link_name}/report/{report_link_name}/{record_ID}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_owner_name", + "tool_parameter_name": "zoho_account_owner_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": "app_link_name", + "tool_parameter_name": "application_link_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": "report_link_name", + "tool_parameter_name": "report_link_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": "record_ID", + "tool_parameter_name": "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": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "record_update_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "result": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tasks": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "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": "ZOHO_SERVER_URL", + "parameter_name": "zoho_server_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "auth_token", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "The OAuth token to use for authentication.", + "is_auth_token": true + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"[\\\"Phone_Number\\\",\\\"Email\\\"]\"\n },\n \"message\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tasks\": {\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n },\n \"data\": {\n \"type\": \"object\",\n \"example\": \"{\\\"Email\\\":\\\"jake@zylker.com\\\",\\\"Phone_Number\\\":\\\"+15876786783\\\"}\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_creator_api/pyproject.toml b/toolkits/zoho_creator_api/pyproject.toml new file mode 100644 index 00000000..e886e76f --- /dev/null +++ b/toolkits/zoho_creator_api/pyproject.toml @@ -0,0 +1,60 @@ +[build-system] +requires = [ "hatchling",] +build-backend = "hatchling.build" + +[project] +name = "arcade_zoho_creator_api" +version = "0.1.0" +description = "Tools that enable LLMs to interact directly with the Zoho Creator 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_zoho_creator_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_zoho_creator_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_zoho_creator_api",] diff --git a/toolkits/zoho_creator_api/tests/__init__.py b/toolkits/zoho_creator_api/tests/__init__.py new file mode 100644 index 00000000..e69de29b